package redis

import (
	"context"
	"fmt"
	"github.com/go-redis/redis/v8"
	"log"
	"project-deploy-service/utils"
	"time"
)

type initRedis struct{}

var rdb *redis.Client

var InitRedis initRedis

func (f *initRedis) Start() {
	config := utils.FileUtil.LoadConfig()
	redisConfig := config.Redis
	addr := fmt.Sprintf("%s:%d", redisConfig.Host, redisConfig.Port)
	rdb = redis.NewClient(&redis.Options{
		Addr:     addr, // Redis 服务器地址
		Username: redisConfig.Username,
		Password: redisConfig.Password, // 没有密码设置
		DB:       redisConfig.DB,       // 使用默认数据库
		PoolSize: 10,                   // 连接池大小
	})

	// 检查连接是否成功
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()

	_, err := rdb.Ping(ctx).Result()
	if err != nil {
		log.Fatalf("Could not connect to Redis: %v", err)
	}

	fmt.Println("Connected to Redis")
}

// GetRedisClient 返回 Redis 客户端实例
func GetRedisClient() *redis.Client {
	return rdb
}
